package testy;

import static org.junit.Assert.*;
import Engine.Engine2;
import gra.Account;
import gra.Bot;
import gra.Card;

import org.junit.Test;


public class Engine2Test 
{
    @Test
    public void Engine2test()
    {
       //Kolory od 0-3
       //Figury od 0-12
       /*
       * I TEST spawdzajacy poprawnosc rozpoznawania konfiguracji.
       */
       try
       {
           Account[] gracze = new Account[10];
           
           for( int i = 0; i < 10; i++ )
           {
               gracze[i] = new Account( new Bot("Testowy "+i), 0, 0 );
           }
           
           Engine2 silnik = new Engine2(gracze);
           assertNotNull(silnik);
           
           //Gracz z pokerem.
           gracze[0].hand[0] = new Card( 1, 1 );
           gracze[0].hand[1] = new Card( 2, 1 );
           gracze[0].hand[2] = new Card( 3, 1 );
           gracze[0].hand[3] = new Card( 4, 1 );
           gracze[0].hand[4] = new Card( 5, 1 );
           
           //Gracz z czworka.
           gracze[1].hand[0] = new Card(1,0);
           gracze[1].hand[1] = new Card(1,1);
           gracze[1].hand[2] = new Card(1,2);
           gracze[1].hand[3] = new Card(4,1);
           gracze[1].hand[4] = new Card(1,3);
           
           //Gracz z ful'em.
           gracze[2].hand[0] = new Card(10,0);
           gracze[2].hand[1] = new Card(3,0);
           gracze[2].hand[2] = new Card(3,1);
           gracze[2].hand[3] = new Card(10,2);
           gracze[2].hand[4] = new Card(10,3);
           
          //Gracz z kolorem.
           gracze[3].hand[0] = new Card(1,1);
           gracze[3].hand[1] = new Card(2,1);
           gracze[3].hand[2] = new Card(10,1);
           gracze[3].hand[3] = new Card(4,1);
           gracze[3].hand[4] = new Card(5,1);
           
           //Gracz ze stritem.
           gracze[4].hand[0] = new Card(1,0);
           gracze[4].hand[1] = new Card(2,1);
           gracze[4].hand[2] = new Card(3,0);
           gracze[4].hand[3] = new Card(4,1);
           gracze[4].hand[4] = new Card(5,3);
           
           //Gracz z trojka.
           gracze[5].hand[0] = new Card(1,1);
           gracze[5].hand[1] = new Card(2,1);
           gracze[5].hand[2] = new Card(1,1);
           gracze[5].hand[3] = new Card(1,2);
           gracze[5].hand[4] = new Card(11,0);
           
           //Gracz z dwoma parami.
           gracze[6].hand[0] = new Card(7,1);
           gracze[6].hand[1] = new Card(11,0);
           gracze[6].hand[2] = new Card(3,3);
           gracze[6].hand[3] = new Card(7,2);
           gracze[6].hand[4] = new Card(11,3);
           
           //Gracz z jedna para.
           gracze[7].hand[0] = new Card(1,1);
           gracze[7].hand[1] = new Card(2,1);
           gracze[7].hand[2] = new Card(3,1);
           gracze[7].hand[3] = new Card(1,1);
           gracze[7].hand[4] = new Card(10,0);
           
           //Gracz z najwyzsza karta.
           gracze[8].hand[0] = new Card(1,0);
           gracze[8].hand[1] = new Card(2,0);
           gracze[8].hand[2] = new Card(3,3);
           gracze[8].hand[3] = new Card(4,2);
           gracze[8].hand[4] = new Card(11,2);
           
           //Gracz z najwyzsza karta.
           gracze[9].hand[0] = new Card(1,1);
           gracze[9].hand[1] = new Card(2,1);
           gracze[9].hand[2] = new Card(3,1);
           gracze[9].hand[3] = new Card(4,1);
           gracze[9].hand[4] = new Card(7,0);
           
           //Test wykrywania pokera.
           assertEquals( true, silnik.poker( gracze[0] ) );//Poker
           
           for( int i = 1; i < 10; i++ )
           {
               assertEquals( false, silnik.poker( gracze[i] ) );
           }
           
           //Test wykrywania czworke.
           assertEquals( true, silnik.czworka( gracze[1] ) );//Czworka
           
           for( int i = 0; i < 10; i++ )
           {
               if( i != 1 )
               {
                   assertEquals( false, silnik.czworka( gracze[i] ) );
               }
           }
           
           //Test wykrywania Ful'a.
           assertEquals( true, silnik.ful( gracze[2] ) );//Ful
           
           for( int i = 0; i < 10; i++ )
           {
               if( i != 2 )
               {
                   assertEquals( false, silnik.ful( gracze[i] ) );
               }
           }
           
           //Test wykrywania koloru.
           assertEquals( true, silnik.kolor( gracze[0] ) );//Poker
           assertEquals( true, silnik.kolor( gracze[3] ) );//Kolor
           
           for( int i = 1; i < 10; i++ )
           {
               if( i != 3 )
               {
                   assertEquals( false, silnik.kolor( gracze[i] ) );
               }
           }
           
           //Test wykrywania trojki.
           assertEquals( true, silnik.trojka( gracze[5] ) );//Trojka
           
           for( int i = 0; i < 10; i++ )
           {
               if( i != 5 )
               {
                   assertEquals( false, silnik.trojka( gracze[i] ) );
               }
           }
           
           //Test wykrywania strita.
           assertEquals( true, silnik.strit( gracze[4] ) );//Strit
           assertEquals( true, silnik.strit( gracze[0] ) );//Poker
           
           for( int i = 0; i < 10; i++ )
           {
               if( i != 4 && i != 0 )
               {
                   assertEquals( false, silnik.strit( gracze[i] ) );
               }
           }
           
           //Test wykrywania dwoch par.
           assertEquals( true, silnik.dwiePary( gracze[6] ) );//Dwie pary
           
           for( int i = 0; i < 10; i++ )
           {
               if( i != 6 )
               {
                   assertEquals( false, silnik.dwiePary( gracze[i] ) );
               }
           }
           
           //Test wykrywania jednej pary.
           assertEquals( true, silnik.para( gracze[7] ) );//Jedna para
           
           for( int i = 0; i < 10; i++ )
           {
               if( i != 7 )
               {
                   assertEquals( false, silnik.para( gracze[i] ) );
               }
           }
           
           gracze = silnik.zwyciesca();
           
           for( Account g : gracze )
           {
               System.out.println( g.owner.nazwa );
           }
           
           
           
           /*
            * II TEST spawdzajacy czy spory sa poprawnie rozwiazywane.
            */
           //POKER
           System.out.println("\nPoker test zwyciesca:");
           gracze = new Account[4];
           
           for( int i = 0; i < 4; i++ )
           {
               gracze[i] = new Account( new Bot("Testowy "+i), 0, 0 );
           }
           
           gracze[0].hand[0] = new Card(1,1);
           gracze[0].hand[1] = new Card(2,1);
           gracze[0].hand[2] = new Card(3,1);
           gracze[0].hand[3] = new Card(4,1);
           gracze[0].hand[4] = new Card(5,1);
           
           gracze[1].hand[0] = new Card(1,2);
           gracze[1].hand[1] = new Card(2,2);
           gracze[1].hand[2] = new Card(3,2);
           gracze[1].hand[3] = new Card(4,2);
           gracze[1].hand[4] = new Card(5,2);
           
           gracze[2].hand[0] = new Card(6,1);
           gracze[2].hand[1] = new Card(7,1);
           gracze[2].hand[2] = new Card(8,1);
           gracze[2].hand[3] = new Card(11,1);
           gracze[2].hand[4] = new Card(10,1);
           
           gracze[3].hand[0] = new Card(11,2);
           gracze[3].hand[1] = new Card(12,2);
           gracze[3].hand[2] = new Card(12,3);
           gracze[3].hand[3] = new Card(12,1);
           gracze[3].hand[4] = new Card(3,0);
           
           Engine2 silnik2 = new Engine2(gracze);
           gracze          = silnik2.zwyciesca();
           
           assertEquals("dwoch graczy wygrywa: Testowy 1 i Testowy 0 (teraz testowany)"
                   , "Testowy 0", gracze[0].owner.nazwa);
           assertEquals("dwoch graczy wygrywa: Testowy 1 (teraz testowany) i Testowy 0"
                   , "Testowy 1", gracze[1].owner.nazwa);
           
           for( Account g : gracze )
           {
               if( g != null )
               {
                   System.out.println(g.owner.nazwa);
               }
           }
           
           //Czworka
           System.out.println("\nCzworka test zwyciesca:");
           gracze = new Account[4];
           
           for(int i = 0; i < 4; i++)
           {
               gracze[i] = new Account( new Bot("Testowy "+i), 0, 0 );
           }
           
           gracze[0].hand[0] = new Card(5,1);
           gracze[0].hand[1] = new Card(5,2);
           gracze[0].hand[2] = new Card(5,3);
           gracze[0].hand[3] = new Card(5,0);
           gracze[0].hand[4] = new Card(12,1);
           
           gracze[1].hand[0] = new Card(11,1);
           gracze[1].hand[1] = new Card(11,2);
           gracze[1].hand[2] = new Card(11,3);
           gracze[1].hand[3] = new Card(11,0);
           gracze[1].hand[4] = new Card(6,2);
           
           gracze[2].hand[0] = new Card(1,1);
           gracze[2].hand[1] = new Card(1,2);
           gracze[2].hand[2] = new Card(1,3);
           gracze[2].hand[3] = new Card(1,0);
           gracze[2].hand[4] = new Card(11,0);
           
           gracze[3].hand[0] = new Card(7,1);
           gracze[3].hand[1] = new Card(3,1);
           gracze[3].hand[2] = new Card(3,2);
           gracze[3].hand[3] = new Card(3,3);
           gracze[3].hand[4] = new Card(3,0);
           
           Engine2 silnik3 = new Engine2(gracze);
           gracze          = silnik3.zwyciesca();
           
           assertEquals( "wygrywa Testowy 1", "Testowy 1", gracze[0].owner.nazwa );
           
           for( Account g : gracze )
           {
               if( g != null )
               {
                   System.out.println( g.owner.nazwa );
               }
           }
           
           //Full
           System.out.println("\nFull test zwyciesca:");
           gracze = new Account[4];
           
           for( int i = 0; i < 4; i++ )
           {
               gracze[i] = new Account( new Bot("Testowy "+i), 0, 0 );;
           }
           
           gracze[0].hand[0] = new Card(5,1);
           gracze[0].hand[1] = new Card(5,2);
           gracze[0].hand[2] = new Card(5,3);
           gracze[0].hand[3] = new Card(0,0);
           gracze[0].hand[4] = new Card(12,1);
           
           gracze[1].hand[0] = new Card(11,1);
           gracze[1].hand[1] = new Card(11,2);
           gracze[1].hand[2] = new Card(0,3);
           gracze[1].hand[3] = new Card(0,0);
           gracze[1].hand[4] = new Card(0,2);
           
           gracze[2].hand[0] = new Card(1, 1);
           gracze[2].hand[1] = new Card(1,2);
           gracze[2].hand[2] = new Card(1,3);
           gracze[2].hand[3] = new Card(7,0);
           gracze[2].hand[4] = new Card(7,0);
           
           gracze[3].hand[0] = new Card(7,1);
           gracze[3].hand[1] = new Card(12,1);
           gracze[3].hand[2] = new Card(3,2);
           gracze[3].hand[3] = new Card(3,3);
           gracze[3].hand[4] = new Card(3,0);
           
           Engine2 silnik44 = new Engine2(gracze);
           gracze           = silnik44.zwyciesca();
    
           assertEquals( "wygrywa Testowy 0", "Testowy 2", gracze[0].owner.nazwa );
    
    
           for( Account g : gracze )
           {
               if( g != null )
               {
                   System.out.println( g.owner.nazwa );
               }
           }
        
           //CZWORKI
           System.out.println("\nCzworki test zwyciesca:");
           gracze = new Account[4];
            
           for( int i = 0; i < 4; i++ )
           {
               gracze[i] = new Account( new Bot("Testowy "+i), 0, 0 );
           }
           
           gracze[0].hand[0] = new Card(5,1);
           gracze[0].hand[1] = new Card(5,2);
           gracze[0].hand[2] = new Card(5,3);
           gracze[0].hand[3] = new Card(5,0);
           gracze[0].hand[4] = new Card(12,1);
            
           gracze[1].hand[0] = new Card(10,0);
           gracze[1].hand[1] = new Card(10,0);
           gracze[1].hand[2] = new Card(10,0);
           gracze[1].hand[3] = new Card(10,0);
           gracze[1].hand[4] = new Card(6,0);
           
           assertTrue( silnik.czworka( gracze[0] ) );
           assertTrue( silnik.czworka( gracze[1] ) );
            
           /*
           gracze[2].hand[0] = new Card(1,3);
           gracze[2].hand[1] = new Card(2,3);
           gracze[2].hand[2] = new Card(3,3);
           gracze[2].hand[3] = new Card(12,3);
           gracze[2].hand[4] = new Card(6,3);
           */
            
           gracze[2].hand[0] = new Card(6,1);
           gracze[2].hand[1] = new Card(4,1);
           gracze[2].hand[2] = new Card(3,1);
           gracze[2].hand[3] = new Card(2,1);
           gracze[2].hand[4] = new Card(1,1);
           
           gracze[3].hand[0] = new Card(7,1);
           gracze[3].hand[1] = new Card(5,3);
           gracze[3].hand[2] = new Card(3,2);
           gracze[3].hand[3] = new Card(3,3);
           gracze[3].hand[4] = new Card(3,0);
           
           Engine2 silnik4 = new Engine2(gracze);
           gracze=silnik4.zwyciesca();
                
           assertEquals("wygrywa Testowy 1", "Testowy 1", gracze[0].owner.nazwa);
            
           for( Account g : gracze )
           {
               if( g != null )
               {
                   System.out.println( g.owner.nazwa );
               }
           }
           
           //Kolor
           System.out.println("\nCzworki test zwyciesca:");
           gracze = new Account[4];
            
           for( int i = 0; i < 4; i++ )
           {
               gracze[i] = new Account( new Bot("Testowy "+i), 0, 0 );
           }
           
           gracze[0].hand[0] = new Card(5,1);
           gracze[0].hand[1] = new Card(6,1);
           gracze[0].hand[2] = new Card(3,1);
           gracze[0].hand[3] = new Card(2,1);
           gracze[0].hand[4] = new Card(12,1);
            
           gracze[1].hand[0] = new Card(10,0);
           gracze[1].hand[1] = new Card(11,0);
           gracze[1].hand[2] = new Card(12,0);
           gracze[1].hand[3] = new Card(8,0);
           gracze[1].hand[4] = new Card(6,0);
           
           assertTrue( silnik.kolor( gracze[0] ) );
           assertTrue( silnik.kolor( gracze[1] ) );
            
           gracze[2].hand[0] = new Card(6,1);
           gracze[2].hand[1] = new Card(4,1);
           gracze[2].hand[2] = new Card(3,1);
           gracze[2].hand[3] = new Card(2,1);
           gracze[2].hand[4] = new Card(1,1);
           
           gracze[3].hand[0] = new Card(7,1);
           gracze[3].hand[1] = new Card(5,3);
           gracze[3].hand[2] = new Card(3,2);
           gracze[3].hand[3] = new Card(3,3);
           gracze[3].hand[4] = new Card(3,0);
           
           Engine2 silnik11 = new Engine2(gracze);
           gracze=silnik11.zwyciesca();
                
           assertEquals("wygrywa Testowy 1", "Testowy 1", gracze[0].owner.nazwa);
            
           for( Account g : gracze )
           {
               if( g != null )
               {
                   System.out.println( g.owner.nazwa );
               }
           }
           
           //Strit
           System.out.println("\nStrit test zwyciesca:");
           gracze = new Account[4];
           
           for( int i = 0; i < 4; i++ )
           {
               new Account( new Bot("Testowy "+i), 0, 0 );
           }
            
           gracze[0].hand[0] = new Card(5,1);
           gracze[0].hand[1] = new Card(5,2);
           gracze[0].hand[2] = new Card(5,3);
           gracze[0].hand[3] = new Card(6,0);
           gracze[0].hand[4] = new Card(12,1);
           
           gracze[1].hand[0] = new Card(1,0);
           gracze[1].hand[1] = new Card(2,0);
           gracze[1].hand[2] = new Card(3,0);
           gracze[1].hand[3] = new Card(12,0);
           gracze[1].hand[4] = new Card(6,3);
           
           gracze[2].hand[0] = new Card(6,1);
           gracze[2].hand[1] = new Card(5,0);
           gracze[2].hand[2] = new Card(4,1);
           gracze[2].hand[3] = new Card(3,1);
           gracze[2].hand[4] = new Card(2,1);
           
           /*
           gracze[2].hand[0] = new Card(1,1);
           gracze[2].hand[1] = new Card(5,0);
           gracze[2].hand[2] = new Card(4,1);
           gracze[2].hand[3] = new Card(3,1);
           gracze[2].hand[4] = new Card(2,1);
           */
           gracze[3].hand[0] = new Card(5,0);
           gracze[3].hand[1] = new Card(4,0);
           gracze[3].hand[2] = new Card(3,0);
           gracze[3].hand[3] = new Card(2,0);
           gracze[3].hand[4] = new Card(1,1);
           
           Engine2 silnik5 = new Engine2(gracze);
           gracze          = silnik5.zwyciesca();
                
           assertEquals("wygrywa Testowy2", "Testowy 2", gracze[0].owner.nazwa);
                
           
           //---------------------------------
           //TROJKI;
           gracze = new Account[4];
           
           for( int i = 0; i < 4; i++ )
           {
               gracze[i] = new Account( new Bot("Testowy "+i), 0, 0 );
           }
            
           gracze[0].hand[0] = new Card(5,1);
           gracze[0].hand[1] = new Card(5,2);
           gracze[0].hand[2] = new Card(5,3);
           gracze[0].hand[3] = new Card(6,0);
           gracze[0].hand[4] = new Card(12,1);
           
           gracze[1].hand[0] = new Card(1,0);
           gracze[1].hand[1] = new Card(1,0);
           gracze[1].hand[2] = new Card(1,0);
           gracze[1].hand[3] = new Card(12,0);
           gracze[1].hand[4] = new Card(6,3);
           
           gracze[2].hand[0] = new Card(0,1);
           gracze[2].hand[1] = new Card(0,0);
           gracze[2].hand[2] = new Card(0,1);
           gracze[2].hand[3] = new Card(11,1);
           gracze[2].hand[4] = new Card(2,1);
           
           gracze[3].hand[0] = new Card(1,0);
           gracze[3].hand[1] = new Card(2,0);
           gracze[3].hand[2] = new Card(3,0);
           gracze[3].hand[3] = new Card(3,0);
           gracze[3].hand[4] = new Card(3,1);
           
           assertTrue(silnik.trojka(gracze[0]));
           assertTrue(silnik.trojka(gracze[1]));
           assertTrue(silnik.trojka(gracze[2]));
           assertTrue(silnik.trojka(gracze[3]));
           
           Engine2 silnik10 = new Engine2(gracze);
           gracze          = silnik10.zwyciesca();
           
            
           for( Account g : gracze )
           {
               if( g != null )
               {
                   System.out.println( g.owner.nazwa );
               }
           }
            
           //Trojka
           System.out.println("\nTrojka test zwyciesca:");
           gracze = new Account[4];
           
           for( int i = 0; i < 4; i++ )
           {
               gracze[i] = new Account( new Bot("Testowy "+i), 0, 0 ); 
           }
           
           gracze[0].hand[0] = new Card(5,1);
           gracze[0].hand[1] = new Card(5,2);
           gracze[0].hand[2] = new Card(5,3);
           gracze[0].hand[3] = new Card(6,0);
           gracze[0].hand[4] = new Card(12,1);
           
           gracze[1].hand[0] = new Card(1,0);
           gracze[1].hand[1] = new Card(2,0);
           gracze[1].hand[2] = new Card(3,0);
           gracze[1].hand[3] = new Card(12,0);
           gracze[1].hand[4] = new Card(6,3);
           
           gracze[2].hand[0] = new Card(8,1);
           gracze[2].hand[1] = new Card(7,0);
           gracze[2].hand[2] = new Card(4,1);
           gracze[2].hand[3] = new Card(11,1);
           gracze[2].hand[4] = new Card(6,1);
           
           gracze[3].hand[0] = new Card(5,0);
           gracze[3].hand[1] = new Card(4,0);
           gracze[3].hand[2] = new Card(1,2);
           gracze[3].hand[3] = new Card(1,3);
           gracze[3].hand[4] = new Card(1,0);
           
           Engine2 silnik6 = new Engine2(gracze);
           gracze=silnik6.zwyciesca();
        
           assertEquals("wygrywa Testowy 0", "Testowy 0", gracze[0].owner.nazwa);
            
           for(Account g : gracze){
               if(g!=null)
                   System.out.println(g.owner.nazwa);
           }
            
           //Dwie pary
           System.out.println("\nDwie pary zwyciesca test zwyciesca:");
           gracze = new Account[4];
           for(int i=0;i<4;i++)
           {
               gracze[i] = new Account( new Bot("Testowy "+i), 0, 0 );
           }
           
           gracze[0].hand[0] = new Card(5,1);
           gracze[0].hand[1] = new Card(5,2);
           gracze[0].hand[2] = new Card(0,3);
           //gracze[0].hand[2] = new Card(3,3);
           gracze[0].hand[3] = new Card(6,0);
           gracze[0].hand[4] = new Card(6,1);
           
           gracze[1].hand[0] = new Card(5,0);
           gracze[1].hand[1] = new Card(5,3);
           gracze[1].hand[2] = new Card(3,0);
           gracze[1].hand[3] = new Card(6,0);
           gracze[1].hand[4] = new Card(6,3);
           
           gracze[2].hand[0] = new Card(8,1);
           gracze[2].hand[1] = new Card(7,0);
           gracze[2].hand[2] = new Card(4,1);
           gracze[2].hand[3] = new Card(11,1);
           gracze[2].hand[4] = new Card(6,1);
           
           gracze[3].hand[0] = new Card(5,0);
           gracze[3].hand[1] = new Card(4,2);
           gracze[3].hand[2] = new Card(1,2);
           gracze[3].hand[3] = new Card(1,3);
           gracze[3].hand[4] = new Card(4,0);
           
           Engine2 silnik7 = new Engine2(gracze);
           gracze          = silnik7.zwyciesca();
        
           assertEquals("wygrywa Testowy 1", "Testowy 1", gracze[0].owner.nazwa);
            
           for( Account g : gracze )
           {
               if( g != null )
               {
                   System.out.println( g.owner.nazwa );
               }
           }
            
           //Jedna para
           System.out.println("\nJedna para test zwyciesca:");
           gracze = new Account[4];
           
           for( int i = 0; i < 4; i++ )
           {
               gracze[i] = new Account( new Bot("Testowy "+i), 0, 0 );
           }
            
           gracze[0].hand[0] = new Card(5,1);
           gracze[0].hand[1] = new Card(5,2);
           gracze[0].hand[2] = new Card(3,3);
           gracze[0].hand[3] = new Card(6,0);
           gracze[0].hand[4] = new Card(12,1);
           
           gracze[1].hand[0] = new Card(5,0);
           gracze[1].hand[1] = new Card(5,3);
           gracze[1].hand[2] = new Card(4,0);
           //gracze[1].hand[2] = new Card(3,0);
           gracze[1].hand[3] = new Card(12,0);
           gracze[1].hand[4] = new Card(6,3);
            
           gracze[2].hand[0] = new Card(8,1);
           gracze[2].hand[1] = new Card(7,0);
           gracze[2].hand[2] = new Card(4,1);
           gracze[2].hand[3] = new Card(11,1);
           gracze[2].hand[4] = new Card(6,1);
          
           gracze[3].hand[0] = new Card(5,0);
           gracze[3].hand[1] = new Card(4,2);
           gracze[3].hand[2] = new Card(1,2);
           gracze[3].hand[3] = new Card(1,3);
           gracze[3].hand[4] = new Card(1,0);
            
           Engine2 silnik8 = new Engine2(gracze);
           gracze          = silnik8.zwyciesca();
           
           assertEquals("Testowy 1 powinien wygrac ta gre", "Testowy 3", gracze[0].owner.nazwa);
            
           for( Account g : gracze )
           {
               if( g != null )
               {
                   System.out.println( g.owner.nazwa );
               }
           }
           
           
           //REMIS DWIE PARY
           System.out.println("\nTest remisu dwoch par: ");
           gracze = new Account[4];
           
           for( int i = 0; i < 4; i++ )
           {
               gracze[i] = new Account( new Bot("Testowy "+i), 0, 0 );
           }
            
           gracze[0].hand[0] = new Card(10,1);
           gracze[0].hand[1] = new Card(10,2);
           gracze[0].hand[2] = new Card(10,3);
           gracze[0].hand[3] = new Card(6,0);
           gracze[0].hand[4] = new Card(6,1);
           
           gracze[1].hand[0] = new Card(6,0);
           gracze[1].hand[1] = new Card(6,3);
           gracze[1].hand[2] = new Card(6,0);
           //gracze[1].hand[2] = new Card(3,0);
           gracze[1].hand[3] = new Card(8,0);
           gracze[1].hand[4] = new Card(8,3);
            
           gracze[2].hand[0] = new Card(8,1);
           gracze[2].hand[1] = new Card(2,0);
           gracze[2].hand[2] = new Card(3,1);
           gracze[2].hand[3] = new Card(1,1);
           gracze[2].hand[4] = new Card(1,2);
           
           gracze[3].hand[0] = new Card(5,0);
           gracze[3].hand[1] = new Card(4,2);
           gracze[3].hand[2] = new Card(1,2);
           gracze[3].hand[3] = new Card(7,3);
           gracze[3].hand[4] = new Card(10,0);

           assertTrue( "Czy pierwszy ma dwie pary", silnik.ful( gracze[0] ) );
           assertTrue( "Czy trzeci ma pare", silnik.ful( gracze[1] ) );
         
           Engine2 silnik9 = new Engine2(gracze);
           gracze          = silnik9.zwyciesca();
           
           
           assertEquals("Testowy 0 powinien wygrac ta gre", "Testowy 0", gracze[0].owner.nazwa);
            
           for( Account g : gracze )
           {
               if( g != null )
               {
                   System.out.println( g.owner.nazwa );
               }
           }
       }
       catch(IllegalArgumentException e2)
       {
           System.out.println(e2);
       }
   }
    
   @Test(expected = NullPointerException.class)
   public void Engine2test2()
   {
        Account[] gracze = new Account[10];
        
        for( int i = 0; i < 10; i++ )
        {
            gracze[i] = new Account( new Bot("Testowy "+i), 0, 0 );
        }
        
        Engine2 silnik = new Engine2(gracze);
        assertNotNull(silnik);
        assertEquals(false,silnik.poker( gracze[0] ));
   }
}
